/************************************************************************
This file is part of Polar4linux
Copyright (C) 2010-2011 Eric jrdn2
Portions Copyright (C) 2007 Matti Juvonen <mpj@iki.fi> (RS400 Tools)
Portions Copyright (C) 2006 Jani Hursti <jani.hursti@hut.fi>,
Portions Copyright (C) 2001-2003 Tom Oliveira e Silva

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
************************************************************************/

#ifndef _POLARSUBS_H
#define _POLARSUBS_H

#include "polarGraphs.h"

class polarSessionView;
class polarStatistics;
class polarSettings;
class polarExBuilder;
class polar4linuxInternals;
class polarSpreadsheet;
class polarSoftwareOptions;
class IHM;

class hrDealer
{
	public:
	hrm_data loadFile(std::string const &path,QDate const &thedate,unsigned int exerciseNumber);
	~hrDealer();
	void clearData();
	void printState();
	private:
	std::vector<rs400_session*> hrms;
	std::vector<rs400_pdd_content*> pdds;
};


class polar4linuxInternals
{
	public:
	polar4linuxInternals(QString &application_path);
	~polar4linuxInternals();

	//IHM *calendarW;
	polarSessionView *plotW;
	polarStatistics *statisticsW;
	polarSettings *settW;
	polarExBuilder *exBuilderW;
	polarSpreadsheet *spreadsheetW;
	polarSoftwareOptions *softOpts;
	IHM *mainW;
	
	polarLINUXio_user user;
	polarLINUXio_player player;
	polarLINUXio_general_settings gs;
	polarLINUXio_exercises_list exos;
	polarLINUXio_reminders reminders;
	polarLINUXio_advanced_exercises_list advancedexos;
	polarLINUXio_advanced_exercises_list trainingexos;

	//for all data, hrDealer allocates, initializes, deallocates.
	//it is not the responsability of the objects to deallocate their pointers in this model.
	hrDealer data;
	
	//preview data
	QImage imagePreview;
	hrm_data hrm4preview;
	rs400_session s4preview;
	rs400_pdd_content p4preview;

	//should move elsewhere
	advExoGraph *adv_graph;
	basicExoGraph *basic_graph;

	//internals
	int IRDAok;
	int connexionTimeout;
	QString ircommPath;
	bool autodisconnect;
	
	//hrm file stuff
	QString application_path;
	QString data_path;
	QString CalendarBGimages_path;

	//misc
	int language;
	graph_configuration default_graph_configuration;
};


#endif
